qcollect-traits 0.6.0

Traits for being generic over collection-types.
use traits::*;

use bit_vec::BitBlock;
use bit_set::{self, BitSet};

impl<B: BitBlock> OrderedCollection for BitSet<B> {}

impl<B: BitBlock> CollectLen for BitSet<B> {
    fn len(&self) -> usize { (*self).len() }
} 

impl<B: BitBlock> CollectCapacity for BitSet<B> {
    fn capacity(&self) -> usize { (*self).capacity() }
}

impl<B: BitBlock> CollectClear for BitSet<B> {
    fn clear(&mut self){ (*self).clear() }
}

impl<B: BitBlock> CollectShrinkToFit for BitSet<B> {
    fn shrink_to_fit(&mut self){ (*self).shrink_to_fit() }
}

// TODO CollectReserve

impl<B: BitBlock> CollectContains<usize> for BitSet<B> {
    fn contains(&self, val: &usize) -> bool { (*self).contains(val) }
}

impl<'a, B: BitBlock + 'a> _CollectIter<'a> for BitSet<B> {
    type Iter = bit_set::Iter<'a, B>;
}

impl<B: BitBlock + 'static> CollectIter for BitSet<B> {
    fn iter<'a>(&'a self) -> <Self as _CollectIter<'a>>::Iter { (*self).iter() }
}

impl<B: BitBlock> CollectInsert<usize> for BitSet<B> {
    type Ret = bool;
    fn insert(&mut self, val: usize) -> Self::Ret { (*self).insert(val) }
}

impl<B: BitBlock> CollectRemove<usize> for BitSet<B> {
    type Ret = bool;
    fn remove(&mut self, val: &usize) -> Self::Ret { (*self).remove(val) }
}